package vboot.core.module.sys.api.main;

import org.springframework.stereotype.Component;
import vboot.core.common.init.SysApiCache;
import vboot.core.security.pojo.Zuser;

@Component
public class SysApiMainHand {

    public boolean hasPerm(Zuser zuser, String method,String url){
        if(zuser.isAdmin()){
            return true;
        }
        boolean flag=false;
         if("GET".equals(method)){
            for (int i = 0; i < SysApiCache.GET1_APIS.size(); i++) {
                if(SysApiCache.GET1_APIS.get(i).getUrl().equals(url)){
                    flag = zuser.hasPerm(SysApiCache.GET1_APIS.get(i).getPos(), SysApiCache.GET1_APIS.get(i).getCode());
                    break;
                }
            }
            if(!flag){
                String frontUrl=url.substring(0,url.lastIndexOf("/"));
                for (int i = 0; i < SysApiCache.GET2_APIS.size(); i++) {
                    if(SysApiCache.GET2_APIS.get(i).getUrl().equals(frontUrl)){
                        flag = zuser.hasPerm(SysApiCache.GET2_APIS.get(i).getPos(), SysApiCache.GET2_APIS.get(i).getCode());
                        break;
                    }
                }
            }
        }else if("POST".equals(method)){
            for (int i = 0; i < SysApiCache.POST_APIS.size(); i++) {
                if(SysApiCache.POST_APIS.get(i).getUrl().equals(url)){
                    flag = zuser.hasPerm(SysApiCache.POST_APIS.get(i).getPos(), SysApiCache.POST_APIS.get(i).getCode());
                    break;
                }
            }
        }else if("PUT".equals(method)){
             for (int i = 0; i < SysApiCache.PUT_APIS.size(); i++) {
                 if(SysApiCache.PUT_APIS.get(i).getUrl().equals(url)){
                     flag = zuser.hasPerm(SysApiCache.PUT_APIS.get(i).getPos(), SysApiCache.PUT_APIS.get(i).getCode());
                     break;
                 }
             }
         }else if("DELETE".equals(method)){
             String frontUrl=url.substring(0,url.lastIndexOf("/"));
             for (int i = 0; i < SysApiCache.DELETE_APIS.size(); i++) {
                 if(SysApiCache.DELETE_APIS.get(i).getUrl().equals(frontUrl)){
                     flag = zuser.hasPerm(SysApiCache.DELETE_APIS.get(i).getPos(), SysApiCache.DELETE_APIS.get(i).getCode());
                     break;
                 }
             }
         }
        return flag;
    }
}
